// model 包包含了应用的数据模型定义
package model

import "gorm.io/gorm"

// Students 表示学生的结构体
type Students struct {
	Student_id                int    `gorm:"primaryKey"`                                                                     // 学生的唯一标识符（主键）
	Name                      string `gorm:"type:varchar(20);not null" json:"name" bingding:"required"`                      // 学生的全名
	GenerateFromPasswordender string `gorm:"type:varchar(20);not null" json:"GenerateFromPasswordender" bingding:"required"` // 学生的性别（如 "男", "女"）
	Birth_date                string `gorm:"type:varchar(20);not null" json:"Birth_date" bingding:"required"`                // 学生的出生日期
	Student_number            string `gorm:"type:varchar(20);not null" json:"Student_number" bingding:"required"`            // 学生的学号（通常是字符串）
	Class_id                  int    `gorm:"type:varchar(20);not null" json:"Class_id" bingding:"required"`                  // 学生所在班级的ID（外键），关联到班级表
	Entry_date                string `gorm:"type:varchar(20);not null" json:"Entry_date" bingding:"required"`                // 学生的入学日期
	Phone_number              uint64 `gorm:"type:varchar(20);not null" json:"Phone_number" bingding:"required"`              // 学生的联系电话
	Email                     string `gorm:"type:varchar(20);not null" json:"Email" bingding:"required"`                     // 学生的电子邮箱
	Address                   string `gorm:"type:varchar(20);not null" json:"Address" bingding:"required"`                   // 学生的家庭地址
	Status                    string `gorm:"type:varchar(20);not null" json:"Status" bingding:"required"`                    // 学生的学籍状态（如 "在读", "休学", "毕业"）
}
// Class 表示班级的结构体
type Class struct {
	Class_id        int    `gorm:"primaryKey"` // 班级的唯一标识符（主键）
	Class_name      string // 班级的名称
	Grade           int    // 年级
	Teacher_id      int    // 班主任的ID（外键），关联到教师表
	Class_headcount int    //班级人数
	Major           string //班级专业
}

// Teachers 表示教师的结构体
type Teachers struct {
	Teacher_id       int    `gorm:"primaryKey"` // 教师的唯一标识符（主键）
	Name             string // 教师的全名
	Teaching_course  string //教授的科目
	Class_management string //管理的班级

}

// Courses 表示课程的结构体
type Courses struct {
	Course_id   int    `gorm:"primaryKey"` // 课程的唯一标识符（主键）
	Course_name string // 课程的名称（如 "数学"）
	Course_code string // 课程的编号（如 "MATH101"）
	Teacher_id  int    // 教授该课程的教师ID（外键），关联到教师表
	Tredits     int    // 课程的学分
	Semester    string // 课程开设的学期（如 "春季", "秋季"）
}

// Grades 表示成绩的结构体
type Grades struct {
	Grade_id   int    `gorm:"primaryKey"` // 成绩的唯一标识符（主键）
	Student_id int    // 学生的ID（外键），关联到学生表
	Course_id  int    // 课程的ID（外键），关联到课程表
	Course     string //课程名
	Score      int    // 学生的成绩（根据成绩系统选择合适的类型，如百分制用int，等级制用string）
	Semester   string // 成绩所属的学期（与课程表对应）
}

// User 结构体表示用户信息，并使用了gorm.Model作为基类以获取默认的ID、创建时间、更新时间等字段
type User struct {
	gorm.Model        // 继承gorm.Model，获得ID, CreatedAt, UpdatedAt, DeletedAt字段
	Name       string `gorm:"varchar(20);not null"`        // 用户名，最大长度为20，不能为空
	Telephone  string `gorm:"varchar(20);not null;unique"` // 电话号码，最大长度为20，不能为空，且唯一
	Password   string `gorm:"size:255;not null"`           // 密码，最大长度为255，不能为空
}
